import unittest
from typing import Any, Optional, Union, List, Generator

def get_caller_name() -> str: ...
def get_caller_caller_name() -> str: ...
def os_path(root: Optional[str], path: str) -> str: ...
def decodes(text: Union[None, bytes, str]) -> Optional[str]: ...
def _lines(lines: Union[str, List[str]]) -> List[str]: ...
def lines(text: Union[str, List[str]]) -> List[str]: ...
def _grep(pattern: str, lines: Union[str, List[str]]) -> Generator[str, None, None]: ...
def grep(pattern: str, lines: Union[str, List[str]]) -> List[str]: ...
def greps(lines: Union[str, List[str]], pattern: str) -> List[str]: ...
def text_file(filename: str, content: str) -> None: ...
def shell_file(filename: str, content: str) -> None: ...
def sh(cmd: str, shell: bool = ..., check: bool = ...,
       ok: Optional[bool] = ..., default: str = ...) -> ShellResult: ...

def _copyedit() -> str: ...
def _centos() -> str: ...
def _nogroup(image: Optional[str] = ...) -> str: ...

class DockerCopyeditTest(unittest.TestCase):
    def caller_testname(self) -> str: ...
    def testname(self, suffix: Optional[str] = ...) -> str: ...
    def testdir(self, testname: Optional[str] = ...) -> str: ...
    def rm_testdir(self, testname: Optional[str] = ...) -> str: ...
    def save(self, testname: str) -> None: ...
    def can_not_chown(self, docker: str) -> Optional[str]: ...
    def healthcheck_not_supported(self, docker: str) -> Optional[str]: ...
    def test_001_help(self) -> None: ...
    def test_002_help(self) -> None: ...
    def test_101_fake_simple(self) -> None: ...
    def test_112_pull_base_image(self) -> None: ...
    def test_202_real_simple(self) -> None: ...
    def test_211_pull_base_image(self) -> None: ...
    def test_221_run_unchanged_copyedit(self) -> None: ...
    def test_231_run_version_too_long(self) -> None: ...
    def test_232_run_version_not_too_long(self) -> None: ...
    def test_233_run_version_made_too_long(self) -> None: ...
    def test_280_change_tempdir(self) -> None: ...
    def test_281_keep_datadir(self) -> None: ...
    def test_282_keep_savefile(self) -> None: ...
    def test_283_keep_inputfile(self) -> None: ...
    def test_284_keep_outputfile(self) -> None: ...
    def test_291_config_keep_datadir(self) -> None: ...
    def test_292_config_keep_savefile(self) -> None: ...
    def test_293_config_keep_inputfile(self) -> None: ...
    def test_294_config_keep_outputfile(self) -> None: ...
    def test_301_remove_volumes(self) -> None: ...
    def test_302_remove_all_volumes(self) -> None: ...
    def test_303_remove_all_volumes(self) -> None: ...
    def test_304_remove_all_volumes_mysql(self) -> None: ...
    def test_310_remove_one_volume(self) -> None: ...
    def test_320_remove_nonexistant_volume(self) -> None: ...
    def test_350_remove_volumes_by_pattern(self) -> None: ...
    def test_380_add_new_volume(self) -> None: ...
    def test_390_add_existing_volume(self) -> None: ...
    def test_400_remove_all_ports(self) -> None: ...
    def test_410_remove_one_port_by_number(self) -> None: ...
    def test_415_remove_one_port_by_number_into_latest(self) -> None: ...
    def test_420_remove_one_port_by_name(self) -> None: ...
    def test_430_remove_two_port(self) -> None: ...
    def test_450_remove_ports_by_pattern(self) -> None: ...
    def test_480_add_new_port(self) -> None: ...
    def test_490_add_existing_port(self) -> None: ...
    def test_500_entrypoint_to_cmd(self) -> None: ...
    def test_505_entrypoint_to_cmd_old_null(self) -> None: ...
    def test_510_set_shell_cmd(self) -> None: ...
    def test_515_set_shell_cmd_old_null(self) -> None: ...
    def test_601_remove_healthcheck(self) -> None: ...
    def test_602_remove_nonexistant_healthcheck(self) -> None: ...
    def test_700_keep_user_as_is(self) -> None: ...
    def test_710_set_null_user(self) -> None: ...
    def test_711_set_no_user(self) -> None: ...
    def test_715_set_user_null_old_null(self) -> None: ...
    def test_720_set_to_newuser_not_runnable(self) -> None: ...
    def test_730_set_to_newuser_being_runnable(self) -> None: ...
    def test_750_set_to_numeric_user_being_runnable(self) -> None: ...
    def test_800_change_workdir(self) -> None: ...
    def test_801_change_workingdir(self) -> None: ...
    def test_810_change_domainname(self) -> None: ...
    def test_820_change_hostname(self) -> None: ...
    def test_850_change_arch(self) -> None: ...
    def test_900_change_license_label(self) -> None: ...
    def test_901_change_info_label(self) -> None: ...
    def test_910_remove_other_label(self) -> None: ...
    def test_920_remove_info_labels(self) -> None: ...
    def test_950_change_info_env(self) -> None: ...
    def test_960_change_info_envs(self) -> None: ...
    def test_970_remove_other_env(self) -> None: ...
    def test_980_remove_info_envs(self) -> None: ...
    def test_990_check_remote_repository(self) -> None: ...
    def test_999_coverage(self) -> None: ...
